package com.ljx.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ljx.CourseWebVoOrder;
import com.ljx.R;
import com.ljx.pojo.EduCourse;
import com.ljx.pojo.frontVo.CourseWebVo;
import com.ljx.pojo.vo.CourseInfoVo;
import com.ljx.pojo.vo.CoursePublishVo;
import com.ljx.service.impl.EduCourseServiceImpl;
import io.swagger.annotations.Api;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 课程基本信息 前端控制器
 * 用来控制第一个输入界面的
 * </p>
 *
 * @author 李加喜
 * @since 2020-09-25
 */
@Api(description = "课程基本信息的添加与修改删除功能并且显示最终的信息")
@RestController
@RequestMapping("/eduservice/course")
@CrossOrigin
public class EduCourseController {
    @Autowired
    private EduCourseServiceImpl eduCourseService;

    //课程列表的显示
    @GetMapping("/getCourse")
    public R getCourseList(){
        QueryWrapper<EduCourse> eduCourseQueryWrapper = new QueryWrapper<>();
        eduCourseQueryWrapper.orderByDesc("gmt_create");
        List<EduCourse> list = eduCourseService.list(eduCourseQueryWrapper);
        return R.ok().data("list",list);
    }
    //课程列表的删除  要删除课程 视频 小节 描述 课程本身都要进行删除
    @DeleteMapping("/deleteCourse/{courseId}")
    public R deleteCourse(@PathVariable("courseId") String courseId){
        eduCourseService.removeCourse(courseId);
        return R.ok();
    }
    //条件功能查询

//====================实现的是对课程添加的一些主要的功能===================================
    @PostMapping("/addcourse")
    public R addCourse(@RequestBody CourseInfoVo courseInfoVo){
        String id = eduCourseService.saveConsurseInfo(courseInfoVo);
        return R.ok().data("courseId",id);
    }
    //实现对课程的修改  两个步骤 根据课程的id进行查看  确认之后进行保存
    //根据课程的ID查询添加的课程的信息
    @GetMapping("/getCourseInfo/{courseId}")
    public R getCourseInfo(@PathVariable String courseId){
        CourseInfoVo courseInfo=eduCourseService.getCourseInfo(courseId);
        return R.ok().data("courseInfo",courseInfo);
    }
    //实现对课程的修改
    @PostMapping("/updateCourseInfo")
    public R updateCourseInfo(@RequestBody CourseInfoVo courseInfoVo){
        eduCourseService.updateCourseInfo(courseInfoVo);
        return R.ok();
    }
    //根据课程的id显示最终课程的信息
    @GetMapping("/getpublishId/{courseId}")
    public R getPublish(@PathVariable String courseId){
        CoursePublishVo publishInfo=eduCourseService.publishId(courseId);
        return R.ok().data("publishInfo",publishInfo);
    }
    //确认最终的课程信息 就是修改edu_course表里面的status状态
    @PostMapping("/updatePublish/{courseId}")
    public R updatePublish(@PathVariable String courseId){
        EduCourse eduCourse = new EduCourse();
        eduCourse.setId(courseId);
        eduCourse.setStatus("Normal");//设置课程的状态
        eduCourseService.updateById(eduCourse);
        return R.ok();
    }
    //根据课程的Id获取课程的信息 (在生成订单模快进行使用)
    @PostMapping("/getCourse/{courseId}")
    public CourseWebVoOrder getCourse(@PathVariable String courseId){
        CourseWebVo courseWebVo = eduCourseService.getBaseCourseInfo(courseId);
        CourseWebVoOrder courseOrder = new CourseWebVoOrder();
        BeanUtils.copyProperties(courseWebVo,courseOrder);
        return courseOrder;
    }
}

